package org.rbac.content.define;

import java.util.List;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.rbac.vo.Action;

/**
 * 
*  <pre>    
* 类名称：ContentDefine 
* 类描述：   
* 创建人：陈国祥   (kingschan)
* 创建时间：2015-3-31 上午11:22:36   
* 修改人：Administrator   
* 修改时间：2015-3-31 上午11:22:36   
* 修改备注：   
* @version V1.0
* </pre>
 */
public interface ContentDefine {

  
    /**
     * cookie保存期限,3天
     */
    int MAX_AGE = 60 * 60 * 24 * 3;
    
    /**
     * 得到程序映射
     * @param req
     * @return
     * @throws Exception
     */
    Map<String, Action> getApplicationMapping()throws Exception;
    
    /**
     * 设置全局资源映射
     * @param req
     * @throws Exception
     */
    void setApplicationMapping()throws Exception;
    
    /**
     * 加载定义的全局资源数据
     * @param req
     * @return
     * @throws Exception
     */
    Map<String, Action> loadApplicationMappingData()throws Exception;
    
    /**
     * 得到单个资源映射详情
     * @param name
     * @return
     * @throws Exception
     */
    Action getActionByUrl(String name)throws Exception;
    
    /**
     * 得到用户授权的所有按扭
     * @param req
     * @return
     * @throws Exception
     */
    Map<String, List<Object>> getUserAccessBtns(HttpServletRequest req)throws Exception;
    
    
    /**
     * 得到当前页面有权限访问的按扭
     * @param req
     * @param actionName
     * @return
     * @throws Exception
     */
    List<Object> getCurrentPageBtns(HttpServletRequest req,String actionName)throws Exception;
    
    
    /**
     * 得到当前用户可以访问的action
     * @param req
     * @return
     * @throws Exception
     */
    Map<String, Object> getUserAccessAction(HttpServletRequest req)throws Exception;
    
    /**
     * 日志记录
     * @param ip
     * @param method
     * @param uri
     * @param uid
     * @param data
     * @param remark
     * @param pass
     * @param seconds
     * @param referer
     * @return
     */
    Boolean log(String ip,String method,String uri,Integer uid,String data,String remark,boolean pass,long seconds,String referer) ;
    
    /**
     * 得到客户端口IP
     * @param request
     * @return
     */
    String getClientIP(HttpServletRequest request);
    
    
    /**
     * 把数据字典加载到内存
     * @param content
     */
    void loadDictionary(ServletContext content)throws Exception;
    
    
    
}
